#ifndef __DIR_H__
#define __DIR_H__

#include "protocol.h"
#include "common.h"

// 目录项信息（用于ls命令）
typedef struct {
    char name[MAX_PATH_LEN];  // 文件名（不含路径）
    off_t size;               // 文件大小（字节）
    mode_t mode;              // 文件类型与权限（如S_IFREG/S_IFDIR）
    time_t mtime;             // 最后修改时间
} DirEntry;

// cd命令参数
typedef struct {
    char target_dir[MAX_PATH_LEN];
} CdParams;

// ls命令参数
typedef struct {
    char current_dir[MAX_PATH_LEN];
} LsParams;

// pwd命令参数（无额外参数）
typedef struct {
    // 无
} PwdParams;

// mkdir命令参数
typedef struct {
    char dirname[MAX_PATH_LEN];
} MkdirParams;

// remove命令参数
typedef struct {
    char filename[MAX_PATH_LEN];
} RemoveParams;

// 目录操作函数声明
int handle_cd(SocketFd sockfd, const CdParams *params);
int handle_ls(SocketFd sockfd, const LsParams *params, DirEntry **entries, int *count);
int handle_pwd(SocketFd sockfd, char *buf, size_t buf_len);
int handle_mkdir(SocketFd sockfd, const MkdirParams *params);
int handle_remove(SocketFd sockfd, const RemoveParams *params);

#endif // __DIR_H__
